Este trabalho se trata de um relatório de análise de dados para a disciplina vulgarmente chamada de “Introdução a Data Science”. Ao longo do relatório serão expostas as motivações para a análise específica, a pergunta a ser respondida, uma amostra dos dados, a estrutura do gráfico esperado, os códigos realizados em R e o gráfico final encontrado.
Ao longo de uma análise de dados, um determinado conjunto de ações é realizado. Este conjunto pode ser ilustrado pela imagem abaixo:
Neste trabalho, estes processos serão distribuídos da seguinte forma:
A pergunta que viso responder é:
De que forma o valor do combustível tende a variar ao longo do governo das presidências?
Suponho que o resultado final se aproxime de algo como este gráfico esboçado no Paint 3D:
Ou seja, imagino que em cada segmento de 4 anos, o combustível tenderá a estar mais caro que no período anterior, entretanto, cada um desses segmentos deverá apresentar um grau diferente de variabilidade ao longo do período. É essa diferença que se visa analisar por fim.
Eu escolhi analisar a Série Histórica de Preços de Combustíveis disponibililizado pela Agência Nacional do Petróleo, Gás Natural e Biocombustíveis - ANP.
Eu escolhi esse dataset por apresentar várias variáveis que me permitem fazer diversas análises, há também milhões de observações realizadas distribuídas ao longo de 19 anos. Além disso, os dados tratam de algo que tem sido relevante para o momento atual brasileiro (2022~2023): o elevado preço dos combustíveis, principalmente da gasolina.
Pretendo alcançar esta resposta ao realizar os seguintes passos:
O dataset escolhido conta com um total de 37 arquivos. Todos eles seguindo o seguinte padrão de nome “ca-AAAA-SS.csv”
Cada tabela importada varia em torno de 300 mil e 900 mil observações. Todas elas, após importadas, apresentam um total de 21.836.285 observações. Os dados contém um total de 16 colunas e seus metadados são encontrados em formato pdf neste site. Abaixo são exibidas algumas informações presentes no pdf (algumas modificadas por mim para trazer maior clareza).
Obs.: nos metadados o termo “revenda” equivale a “Posto de combustivel” ou “local onde há o comércio de combustível”.
| Nome da coluna | Tipo do dado | Descrição | Exemplos de valores |
|---|---|---|---|
| Regiao - Sigla | alfanumérico | Código da região brasileira em que se está localizado a revenda | “CO”, “N”, “NE”, “S”, “SE” |
| Estado - Sigla | alfanumérico | Código do estado brasileiro em que se está localizado a revenda | “ES”, “GO”, “TO” |
| Municipio | alfanumérico | Nome do município da revenda | “JAPARATUBA”, “CARAGUATATUBA”, “INDAIATUBA”, “UBATUBA” |
| Revenda | alfanumérico | Nome da revenda | “ZURANO AUTO POSTO LTDA”, “MIMIM COMERCIO DE COMBUSTIVEIS EIRELI”, “MINIANO COMBUSTIVEIS LTDA” |
| CNPJ da Revenda | alfanumérico* | Número do Cadastro Nacional de Pessoa Jurídica | “00.000.042/0001-22”, “00.000.042/0002-03” |
| Nome da Rua | alfanumérico | Nome do logradouro | ” IRINEU PINTO”, “GLEBA”, “LADEIRA DO CAMURUJIPE3” |
| Numero Rua | alfanumérico | Número do logradouro | “0,041666667”, 90130, 229000 |
| Complemento | alfanumérico | Complemento do logradouro | “-50”, “KM 364+40 METROS”, “FUNDOS PARA JACU PESSEGO Nº 4700” |
| Bairro | alfanumérico | Nome do bairro | ÁGUA: BRANCA, DE MENINOS, DOCE, FRESCA, FRIA, LIMPA, PARADA, PRETA, QUENTE, RASA, RAZA, SANTA, VERDE |
| Cep | alfanumérico | Número do Código do Endereço Postal (CEP) do logradouro | 00000-000, 01000-000, 99935-800 |
| Produto | alfanumérico | Nome do combustível | “GASOLINA”, “ETANOL”, “DIESEL”, “GNV”, “DIESEL S50”, “DIESEL S10”, “GASOLINA ADITIVADA” |
| Data da Coleta | data | Data da coleta do(s) preço(s) | “10/05/2004”, “30/06/2022” |
| Valor de Venda | numerico | Preço de venda ao consumidor final praticado pelo revendedor | “0,799”, “1,899”, “2” |
| Valor de Compra | numerico | Preço de distribuição (preço de venda da distribuidora para o posto revendedor de combustível) | “0,4214”, “2,437”, “2,08899” |
| Unidade de Medida | alfanumérico | Unidade de Medida | “R$ / litro”, “R$ / m³” |
| Bandeira | alfanumérico | Nome da Bandeira da revenda | “BRANCA”, “COSAN LUBRIFICANTES”, “MAGNUM”, “WALENDOWSKY”, “TORRAO”, “TRIANGULO” |
Apesar da riqueza de informações obtidas com este dataset, apenas serão visadas as seguintes colunas:
Tendo sido escolhidos e apresentados os dados e seus “problemas”, comecemos a preparação.
Para gerar este arquivo, estou usando o knitr para processar o R Markdown. Para que ele funcione de forma estável, é recomendável definir algumas configurações.
Antes de realizarmos quaisquer operações nos dados, primeiro precisamos instalar e importar as bibliotecas que serão utilizada para a manipulação dos dados. O tidyverse é uma coleção de diversos pacotes em R que facilitam a manipulação dos dados. Já o lubridate é uma biblioteca (supostamente pertencente ao tidyverse, mas que apresentou problemas durante a execução) que traz funções apropriadas para a manipulação de datas.
Obs.: esta primeira linha é uma configuração que define qual repositório será utilizado automaticamente pela instalação de pacotes.
options(repos = c(CRAN = "https://cran.r-project.org/"))
if (!require(lubridate)) {
install.packages("lubridate")
}
## Loading required package: lubridate
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
if (!require(tidyverse)) {
install.packages("tidyverse")
}
## Loading required package: tidyverse
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.2 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.2 ✔ tibble 3.2.1
## ✔ purrr 1.0.1 ✔ tidyr 1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(tidyverse)
library(lubridate)
Nessa etapa, iremos realizar a “aquisição” dos dados. Importando os dados de sua fonte de origem e os estruturando de uma forma específica no código para que possamos trabalhar com eles. Mas antes de atingirmos o molho, precisamos primeiro preparar os tomates.
Quanto à importação, precisamos primeiro definir de que forma importaremos os dados: serão baixados diretamente da fonte ou serão utilizados dados baixados manualmente em formato CSV?
Para reduzir o tempo de importação durante o desenvolvimento deste projeto, optei por importar os arquivos baixados manualmente, mas deixarei a disposição o método para importar diretamente da fonte.
Independente de qual seja o método de entrada, precisaremos dos nomes de todos os códigos a serem importados organizados em um vetor, e o bloco abaixo realiza esta tarefa.
Obs.: O código abaixo está limitado aos dados disponibilizados até o dia 09/02/2023, onde estavam disponíveis os dados que iam desde 2004-01 a 2022-01.
years <- c(2004:2021)
semesters <- c("-01", "-02")
expanded_grid <- expand.grid(years, semesters)
all_file_codes <- sort(paste0(expanded_grid$Var1, expanded_grid$Var2))
all_file_codes <- append(all_file_codes, "2022-01")
sufix <- "ca-"
extension <- ".csv"
all_complete_file_codes <- paste0(sufix, all_file_codes, extension)
Caso deseje obter todos os dados diretamente através da internet, este bloco define o caminho a se obter os dados, ou seja, a url base para todos os arquivos, apenas faltando adicionar os nomes dos arquivos já obtidos anteriormente em sua extremidade.
get_data_from_internet <- FALSE
Caso prefira utilizar (assim como eu) os dados já baixados, este bloco definirá que o caminho de obtenção dos dados é um caminho relativo do repositório em que este arquivo R Markdown que leva até onde estão armazenados os dados.
Obs.: perceba que caso todos os blocos de código deste arquivo sejam executados sequencialmente, essa opção irá sobrepor a opção de importação pelo link.
base_path <- if_else(isKnitting, "", "TrabalhoFinal/")
if (get_data_from_internet) {
base_path <- "https://www.gov.br/anp/pt-br/centrais-de-conteudo/\
dados-abertos/arquivos/shpc/dsas/ca/"
}
data_path <- paste0(base_path, "FuelDB/")
Independente de qual escolha foi tomada acima, o bloco abaixo realizará a “colagem” dos códigos obtidos com a origem escolhida.
files_to_be_imported <- paste0(data_path, all_complete_file_codes)
Tendo finalizada toda a preparação dos tomates arquivos a
serem importados, vamos à importação de fato.
Tal qual na preparação de um molho, você pode preparar todos os ingredientes na hora ou então fazer uma organização anterior de alguns deles. E é esta organização prévia que faremos durante a importação.
Poderíamos apenas fazer uma importação simples:
imported_db <- read_csv2(files_to_be_imported)
Mas ao realizarmos a função glimpse(imported_db) vemos
que existem problemas existentes que poderíamos resolver ao utilizar
melhor do potencial dos parâmetros existentes no
read_csv2(), não precisando esperar chegar na etapa de tidy
para este propósito, talvez até mesmo tendo comprometido o dados
cruciais para as análises desejadas.
Alguns dos problemas existentes que podem ser corrigidos:
col_select para selecionar apenas
as necessárias ao passarmos um vetor contendo os índices das colunas.
Outra alternativa seria utilizar um vetor com os nomes das colunas tal
como em
col_numbers <- c("Data da Coleta", "Produto", "Valor de Venda"),
mas como neste caso modificaremos os nomes das colunas, para evitar
problemas, usaremos os índices.name_repair com o valor “universal” para corrigirmos, neste
caso efetivamente substituindo hifens e espaços por pontos (“.”).Valor de Venda são do tipo double apesar de
utilizarem “,” como marcação de número decimal. Para isso podemos usar o
parâmetro locale para que não seja necessária a
inferência.col_types
para corrigir esta questão.
Data da Coleta deveria ser do tipo
date, mas está sendo lido como char. Para isso
usaremos a função col_date para definir o seu tipo e
definimos também qual é o formato lido para que seja realizada a
conversão.Produto apresenta poucas variáveis
categóricas, um tipo de dado mais apropriado para lidar com esse tipo de
característica é o factor, para isso usaremos a função
col_factor.Teoricamente poderíamos também já modificar os nomes das colunas
“Data da Coleta” e “Valor de Venda” para nomes mais simples como “Data”
e “Valor”, mas não consegui fazer funcionar o parâmetro
col_names do jeito que eu gostaria 😅.
Obs.: talvez importar tudo de uma vez só seja pesado demais para a memória RAM, neste caso, aconselho que importe em parcelas menores, modificando no código acima qual o intervalo dos arquivos a serem importados aqui.
interesting_cols <- c(12, 11, 13)
imported_db <- read_csv2(
file = files_to_be_imported,
col_select = all_of(interesting_cols),
name_repair = "universal",
locale = locale(
decimal_mark = ","
),
col_types = cols(
Data.da.Coleta = col_date(
format = "%d/%m/%Y"
),
Produto = col_factor()
)
)
## New names:
## • `Regiao - Sigla` -> `Regiao...Sigla`
## • `Estado - Sigla` -> `Estado...Sigla`
## • `CNPJ da Revenda` -> `CNPJ.da.Revenda`
## • `Nome da Rua` -> `Nome.da.Rua`
## • `Numero Rua` -> `Numero.Rua`
## • `Data da Coleta` -> `Data.da.Coleta`
## • `Valor de Venda` -> `Valor.de.Venda`
## • `Valor de Compra` -> `Valor.de.Compra`
## • `Unidade de Medida` -> `Unidade.de.Medida`
Caso deseja dar uma “vislumbrada” nos dados, basta executar a função
glimpse() passando os dados importados como parâmetro.
glimpse(imported_db)
## Rows: 21,836,285
## Columns: 3
## $ Data.da.Coleta <date> 2004-05-11, 2004-05-11, 2004-05-11, 2004-05-10, 2004-0…
## $ Produto <fct> GASOLINA, ETANOL, DIESEL, GASOLINA, ETANOL, DIESEL, GAS…
## $ Valor.de.Venda <dbl> 1.967, 0.899, 1.299, 1.850, 0.780, 1.290, 2.030, 1.290,…
Agora com os dados já importados e enxutos, podemos refinar ainda mais a limpeza já iniciada na importação.
Vale ressaltar que as etapas realizadas abaixo poderiam estar todas em um único bloco, algumas até mesmo feitas “simultaneamente”. Elas não estão dessa forma pois optei pela separação para tornar mais atômico e tornar mais clara a explicação do que se está fazendo.
Pela praticidade da repetição, deixaremos os dados importados
armazenados na variável imported_db e usaremos a variável
tidying_db para a limpeza dos dados.
tidying_db <- imported_db
Aqui vamos modificar os nomes das 3 colunas que temos para nomes mais simples e curtos.
tidying_db <- tidying_db |>
rename(
data = "Data.da.Coleta",
produto = "Produto",
valor = "Valor.de.Venda",
)
Aqui faremos a limpeza de valores que possam estar como NA (Not Available), entretanto, como podemos ver abaixo…
count(tidying_db[rowSums(is.na(tidying_db)) > 0, ])
## # A tibble: 1 × 1
## n
## <int>
## 1 0
Nenhuma das 3 colunas que selecionamos apresenta valores NA. Mas caso desejássemos removê-los, executaríamos o comando abaixo.
tidying_db <- drop_na(tidying_db)
Para simplificar a visualização, aqui escolhemos apenas um tipo de combustível para ser analisado. Como gasolina tende a ser o mais frequente e também é o que apresenta a maior quantidade de observações, sendo o campeão com 7.250.069 observações no presente momento de limpezas, ela será a escolhida para estar disposta no gráfico. Como toda a tabela agora estará relacionada a este combustível escolhido, a coluna “produto” pode deixar de existir em nossa tabela.
combustiveis <- c("GASOLINA", "ETANOL", "DIESEL", "GNV")
combustivel_escolhido <- combustiveis[1]
tidying_db <-
tidying_db |>
filter(produto == combustivel_escolhido) |>
select(-produto)
Para deixar organizadinho, ordenemos por data.
tidying_db <- tidying_db |>
arrange(data)
Por fim, assim como começamos a etapa de limpeza adicionando o dado importado a uma variável de transição, finalizamos aqui a transição e temos por fim o nosso dataset limpo.
tidied_db <- tidying_db
Nesta etapa iremos manipular de forma mais “assertiva” os dados. Criando colunas, mudando valores, etc.
Mais uma variável de transição como já se deve ter acostumado.
transforming_db <- tidied_db
Para obtermos um valor mais dentro da realidade ao redor dos diversos postos/revendas espalhadas pelo Brasil, definiremos que cada dia terá como valor correspondente a média de todos os outros valores deste combustível medidos no mesmo dia.
transforming_db <- transforming_db |>
group_by(data) |>
summarise(valor = mean(valor)) |>
ungroup()
Aqui definimos as informações quanto a quais presidentes estavam em exercício em quais períodos de tempo. Também definimos uma função que nos auxilia para obter facilmente o presidente a partir de uma data específica. Isso será carregado agora, mas utilizado posteriormente.
Os números 1 e 2 estão sendo usados para indicar qual mandato está sendo representado.
lula1 <- interval(ymd("2003-01-01"), ymd("2006-12-31"))
lula2 <- interval(ymd("2007-01-01"), ymd("2010-12-31"))
dilm1 <- interval(ymd("2011-01-01"), ymd("2014-12-31"))
dilm2 <- interval(ymd("2015-01-01"), ymd("2016-08-31"))
temer <- interval(ymd("2016-09-01"), ymd("2018-12-31"))
bolso <- interval(ymd("2019-01-01"), ymd("2022-12-31"))
presidentes_l <- list(
l1 = lula1,
l2 = lula2,
d1 = dilm1,
d2 = dilm2,
tm = temer,
bn = bolso
)
get_president_by_date <- function(myDate) {
resultado <- case_when(
myDate %within% presidentes_l$l1 ~ "Lula 1",
myDate %within% presidentes_l$l2 ~ "Lula 2",
myDate %within% presidentes_l$d1 ~ "Dilma 1",
myDate %within% presidentes_l$d2 ~ "Dilma 2",
myDate %within% presidentes_l$tm ~ "Temer",
myDate %within% presidentes_l$bn ~ "Bolsonaro",
TRUE ~ "Outro"
)
return(resultado)
}
Aqui usamos o que carregamos anteriormente, definindo uma coluna apenas para indicar quem estava na presidência no momento.
transforming_db <- transforming_db |>
mutate(
presidentes = get_president_by_date(data)
)
Como estamos utilizando valores categóricos, vamos converter esta coluna para o tipo factor que é mais denso e permite colocarmos uma certa ordem de prioridades que será útil na hora da geração da legenda.
presidents_list <- c(
"Bolsonaro",
"Temer",
"Dilma 2",
"Dilma 1",
"Lula 2",
"Lula 1"
)
transforming_db$presidentes <- as.factor(transforming_db$presidentes)
transforming_db$presidentes <- factor(
transforming_db$presidentes,
levels = presidents_list
)
Como sabemos, a Dilma sofreu impeachment e foi sucedida pelo Temer. Para isso, armazenaremos essa informação para uso futuro.
minha_data_base <- ymd("0001-01-01")
impeachment <- transforming_db |>
filter(presidentes == "Dilma 2") |>
mutate(data = minha_data_base + (data - min(data))) |>
arrange(desc(data)) |>
slice_head(n = 1) |>
select(data)
impeachment_date <- impeachment$data
Aqui convertemos as datas para torná-las relativas ao início do mandato de cada um, nesse caso se baseando na data mais recente de que se tem no banco de dados (o que acabou gerando problemas que foram contornados).
minha_data_base <- ymd("0001-01-01")
defasagem_do_lula <- ymd("2004-05-10") - ymd("2003-01-01")
transforming_db <- transforming_db |>
group_by(presidentes) |>
mutate(
data = minha_data_base + (data - min(data)) +
if_else(
presidentes == "Lula 1",
defasagem_do_lula,
minha_data_base - minha_data_base
)
) |>
ungroup()
Para tornar o gráfico mais interessante, achei preferível colocar o Temer logo em seguinda do segundo mandato da Dilma, por isso realizei as modificações abaixo nas datas do Temer.
data_inicial <- ymd("0001-01-01")
transforming_db <- transforming_db |>
group_by(presidentes) |>
mutate(
data = data +
if_else(
presidentes == "Temer",
impeachment_date - as.Date(data_inicial),
as.Date(data_inicial) - as.Date(data_inicial)
)
)
Dados transformados com sucesso. 😀👍
transformed_db <- transforming_db
Nesta etapa visamos mostrar de forma visual e descritiva os resultados encontrados nos procedimentos anteriores.
Características gerais do gráfico:
ggplot(transformed_db, aes(x = data, y = valor, color = presidentes)) +
geom_smooth() +
scale_x_continuous(
breaks = seq(
min(transformed_db$data),
max(transformed_db$data),
by = "6 months"
),
labels = 1:8
) +
ggtitle(
paste(
"Relação do preço de",
tolower(combustivel_escolhido),
"por presidente"
)
) +
labs(
y = paste("R$", tolower(combustivel_escolhido)),
x = "Semestres"
) +
guides(color = guide_legend(title = "Presidentes")) +
scale_color_manual(
values = c("#00ff04", "#333333", "#711f1f", "#940000", "#ff3232", "#FF0000")
)
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Por fim, salvemos a imagem 🖼️! Eu utilizei um índice (atualmente em 43) pois fui gerando diversas imagens de teste ao longo do processo de testes.
index <- 51
index <- index + 1
ggsave(
filename = paste0("meu_grafico_", index, ".png"),
path = paste0(base_path, "Imagens"),
width = 8,
height = 5,
dpi = 300
)
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Nesta etapa busco trazer parte da sequência de gráficos gerados em busca do gráfico final desejado, bem como uma breve análise para cada um deles
A imagem acima representou o primeiro marco visual no desenvolvimento. Ela representava, se não me engano, a variação do preço do GNV entre 2004 e 2009. O GNV foi escolhido por ter poucas observações em relação aos outros. Quanto ao gráfico, vemos um crescimento quase linear de seu preço ao longo desses anos.
Se não me engano, este continua ilustrando o valor do GNV, só que dessa vez contemplando uma quantidade maior de dados.
Começamos a entrar na onda colorida e o gráfico agora também está mais explicativo. Ele ilustra a legenda para as cores, também apresenta um título e textos customizados para os valores laterais. Aqui já começamos a ter uma resposta para a pergunta feita inicialmente “De que forma o valor do combustível tende a variar ao longo do governo das presidências?” E vemos que no governo do Temer e no governo do Bolsonaro houveram crescimentos no valor do combustível de forma muito mais intensa do que os da Dilma e do Lula.
Aqui ocorre a maior aproximação vista até agora do gráfico idealizado inicialmente. Assim como no anterior, também conseguimos responder à pergunta proposta, dessa vez com uma visualização um pouco mais densa que a anterior e que traz a data relativa de governo ao invés da data na qual os governantes estiveram no poder, Assim podendo analisar de que forma cada uma das linhas se comportou ao longo de seu período de mandato. Com isso, conseguimos constatar que a taxa de variabilidade tende a ser bem maior após o primeiro ano de governo.
Com isso alcançamos o resultado final. Podemos então analisar a forma com o preço do combustível tem variado ao logo dos semestres de governo de cada um dos presidentes presentes no dataset. É interessante perceber que nos governos de Lula 1 e 2, e durante o governo 1 de Dilma, o preço de combustível se apresentou consideravelmente estável, sem grandes variações bruscas de crescimento.
Tendo concluído todos os procedimentos acima, acabamos de ver o resultado final encontrado. Com isso, serão analisados alguns aspectos gerais do trabalho.
Durante o processo de pesquisa, foi difícil e divertido o processo de busca por dados que viessem a chamar atenção e que parecessem render gráficos interessantes para tratar aqui neste trabalho. Mas após vagar pela Base dos dados, pelo site do governo e por alguns dados da CNPq, tive acesso a alguns bons conjuntos de dados e dei sorte do que escolhi já estar consideravelmente bem organizado.
Vejamos agora algumas considerações quanto as etapas realizadas.
A importação, embora possa ter um caminho simples e direto, tem um considerável número de “armadilhas”. Algumas das que ocorreram pra mim foram:
E uma coisa que achei interessante foi o quanto é possível utilizar da etapa de importação para já preparar os dados para as etapas posteriores.
Embora já estivessem bem organizados, alguns detalhes foram
modificados para poder tornar mais fácil de se manipular. Esta parte não
deu muito problema, a não ser por eu não conseguir modificar o nome das
colunas importadas durante a própria importação, que eu suponho ser
possível com o parâmetro col_names da função
read_csv.
Aqui eu percebi uma certa dificuldade de traçar a linha adequada entre a busca pela tabela tidy e a transformação da tabela para o que desejo alcançar. Mas posteriormente foi possível distinguir e definir onde termina um e começa outro.
Tendo sido realizada uma boa organização prévia, a manipulação para se alcançar a tabela final desejada não apresentou muitos problemas. Até que aos poucos e através da análise, foi-se percebendo que o gráfico ilustrado apresentava algumas incongruências que foram posteriormente descobertas e tratadas.
Embora as etapas anteriores tenham aparentado relativa simplicidade, isso não resultou em um trabalho fácil, sendo dispendidas horas em cada uma das etapas. Que apenas no final, por pobre planejamento prévio, acabou mostrando necessidade de se refatorar parte dos códigos anteriores, visto que a estrutura produzida até então não era o suficiente para ilustrar o que se planejava inicialmente.
Após algumas refatorações do código de cima a baixo, pode-se acalçar por fim um código bastante modular, mas preferencialmente sequencial.
Inicialmente visava-se encontrar uma relação direta entre presidente em exercício e preços dos combustíveis, para possivelmente chegarmos no resultado de que alguma das presidências tenha tido um forte impacto no aumento dos preços. Entretanto, o que se pode ver é que, dada a limitação dos dados analisados, não se pode haver uma comparação direta das flutuações de preço ao longo do tempo diretamente com as ações das presidêcias, visto que não há comparação com os valores globais de combustíveis, nem com possíveis decisões governamentais que possam ter impactado a variação.
Entretanto, pode-se perceber o visível aumento dos preços dos combustíveis geral entre os governantes, a não ser no segundo mandato do Lula.
Quanto a análises futuras, uma simples e interessante seria ver a comparação entre o crescimento de cada um dos tipos de combustível. Outra, que demandaria maior pesquisa e estudo seria uma para responder a pergunta inicial, talvez tendendo a uma visualização similar a esta abaixo que mostra a taxa de mortes por dia devido à pandemia e as falas do então presidente.
Na visualização que proponho, haveriam algumas medidas tomadas pelos governantes que possam ser consideradas relevantes a variação do preço do combustível, como por exemplo a paralização dos caminhoneiros e o navio encalhado em 2021, bem como a comparação dos preços de combustível no Brasil com os preços internacionais.